/**
 * Created by hama on 2016/6/27.
 */
//注册的操作,都挂在到user这个对象上.
//随后，如果有关于注册的操作，是不是我们直接调用这个对象

//连接数据库
var mongodb = require('./db');
//我在写这个对象的时候，逼着我是不是就要考虑有哪些数据啊？
function User(user){
    //对象，先写这个属性
    this.name = user.name;
    this.password = user.password;
    this.email = user.email;
}
//注册信息的保存
User.prototype.save = function(callback){
    //1.第一步,收集数据
    //2.打开数据库
    //3.打开数据库当中的users集合
    //4.将数据写入users集合当中去.
    var user = {
        name:this.name,
        password:this.password,
        email:this.email
    };
    //打开数据库
    mongodb.open(function(err,db){
        if(err){
            //res.flash('error','数据库连接失败');
            return callback(err);
        }
        //打开数据库当中的users集合
        db.collection('users',function(err,collection){
            if(err){
                mongodb.close();
                return callback(err);
            }
            //将数据写入users集合当中去.
            collection.insert(user,function(err,data){
                //无论正确与否，这个数据库都需要关闭.
                mongodb.close();
                if(err){
                    return callback(err);
                }else{
                    callback(null,data[0]);
                }
            })
        })
    })


}
//读取用户的信息
User.get = function(name,callback){
    //打开数据库
    mongodb.open(function(err,db){
        if(err){
            return callback(err);
        }
        //读取users集合
        db.collection('users',function(err,collection){
            if(err){
                mongodb.close();
                return callback(err);
            }
            //查询用户名(name)的文档
            collection.findOne({name:name},function(err,user){
                if(err){
                    return callback(err);
                }
                callback(null,user);//成功返回查询的用户信息

            })

        })
    })
}

//封装成模块,方便调用
module.exports = User;



